// 6stars/乘积凑整.cpp

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

const int MAXN = 205; // n 的最大值
const int MAXK = 205; // k 的最大值
const int MAXL = 205; // 质因子 5 的最大数量
const int MAXM = 205; // 质因子 2 的最大数量

bool dp[MAXN][MAXK][MAXM][MAXL]; // dp 数组
int pw2[MAXN];                   // 质因子 2 的数量
int pw5[MAXN];                   // 质因子 5 的数量

// 计算一个数的因子2和因子5的数量
pair<int, int> countFactors(long long num) {
  int count2 = 0, count5 = 0;
  while (num % 2 == 0) {
    count2++;
    num /= 2;
  }
  while (num % 5 == 0) {
    count5++;
    num /= 5;
  }
  return {count2, count5};
}

int main() {
  int n, k;
  cin >> n >> k;
  vector<long long> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    auto factors = countFactors(a[i]);
    pw2[i] = factors.first;
    pw5[i] = factors.second;
  }

  // 初始化 dp 数组
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= k; j++)
      for (int x = 0; x <= MAXM; x++)
        for (int y = 0; y <= MAXL; y++)
          dp[i][j][x][y] = false;

  // 初始状态
  dp[0][0][0][0] = true; // 选择 0 个数，质因子 2 和 5 的数量都是 0

  // 动态规划转移
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < k; j++) {
      for (int x = 0; x <= MAXM; x++) {
        for (int y = 0; y <= MAXL; y++) {
          if (dp[i][j][x][y]) {
            // 选择第 i 个数
            if (j + 1 <= k && x + pw2[i] <= MAXM && y + pw5[i] <= MAXL) {
              dp[i + 1][j + 1][x + pw2[i]][y + pw5[i]] = true;
            }
            // 不选择第 i 个数
            dp[i + 1][j][x][y] = true;
          }
        }
      }
    }
  }

  // 计算最大末尾零的数量
  int result = 0;
  for (int x = 0; x <= MAXM; x++) {
    for (int y = 0; y <= MAXL; y++) {
      if (dp[n][k][x][y]) {
        result = max(result, min(x, y));
        // 末尾零的数量是由质因子 2 和 5 的数量共同决定的
      }
    }
  }

  cout << result << endl; // 输出结果
  return 0;
}